@use 'sass:map';

@mixin table-theme($theme) {
  $primary: map.get($theme, primary);
  $primary-color: map.get($primary, 500);
  $is-dark-theme: map.get($theme, is-dark);
  $foreground: map.get($theme, foreground);
  $background: map.get($theme, background);

  .mat-mdc-table,
  .mat-mdc-paginator {
    background-color: inherit !important;
    transition: background-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
  }

  .table-wrapper {
    overflow: auto;

    .table,
    .paginator {
      width: 100%;
    }
  }

  th {
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: bold;
    white-space: nowrap;

    &.mat-mdc-header-cell {
      color: map.get($foreground, text);
      font-size: 11px;
      font-weight: 500;
    }
  }

  .pointer {
    cursor: pointer;
  }

  tr {
    &.mat-mdc-header-row {
      height: 40px !important;
      padding-bottom: 4px;
    }

    &.highlight {
      &:hover {
        td {
          transition: background 0.1s ease;
          background: map.get($background, hover);
        }
      }
    }

    .cnsl-table-action {
      visibility: hidden;
      transition: color 0.2s ease;

      &:active,
      &:hover,
      &:focus,
      &:focus-within {
        visibility: visible;
      }
    }

    &:hover {
      .cnsl-table-action {
        visibility: visible;
      }
    }
  }

  th,
  td {
    padding: 0 0.5rem !important;
  }

  .mat-calendar-table-header tr th {
    height: 14px;
  }

  td .mat-mdc-checkbox,
  th .mat-checkbox {
    margin-left: 1rem;
  }

  .no-content-row {
    background-color: if($is-dark-theme, #ffffff10, #f4f4f470);
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
    display: flex;
    align-items: center;
    padding: 0.5rem;
    font-size: 14px;
    justify-content: center;
    font-style: italic;
  }

  .selection {
    width: 80px;
    max-width: 80px;

    .checkbox {
      margin-right: auto;
    }

    .hidden {
      visibility: hidden;
    }
  }

  th .selection {
    margin-left: 1rem;
  }

  .state {
    border-radius: 50vw;
    padding: 2px 0.5rem;
    letter-spacing: 0.05em;
    font-weight: 500;
    font-size: 12px;
    white-space: nowrap;
    background-color: if($is-dark-theme, map.get($background, state), #e4e7e4);
    box-shadow: 0 0 3px #0000001a;

    &.active {
      background-color: if($is-dark-theme, map.get($background, state-active), #cbf4c9);
      color: if($is-dark-theme, #cbf4c9, #0e6245);
    }

    &.inactive {
      color: if($is-dark-theme, #ffc1c1, #620e0e);
      background-color: if($is-dark-theme, map.get($background, state-inactive), #ffc1c1);
    }

    &.neutral {
      background: if($is-dark-theme, #01489c78, #47a8ff82);
      color: if($is-dark-theme, #47a8ff, #01489c);
    }
  }

  .bg-state {
    background-color: if($is-dark-theme, map.get($background, state), #e4e7e4) !important;

    &.active {
      background-color: if($is-dark-theme, map.get($background, state-active), #cbf4c9) !important;
      color: if($is-dark-theme, #cbf4c9, #0e6245) !important;
    }

    &.inactive {
      color: if($is-dark-theme, #ffc1c1, #620e0e) !important;
      background-color: if($is-dark-theme, map.get($background, state-inactive), #ffc1c1) !important;
    }
  }

  .color-shadow {
    border: 1px solid if($is-dark-theme, rgba(#8795a1, 0.2), rgba(#8795a1, 0.2));
    box-shadow: 0 0 3px #0000001a;
  }
}
